package com.qyl.http_upload.finally_code;

/**
 * Enum：https://blog.csdn.net/qq_41466440/article/details/113814209
 *  enum是没有构造函数的，准确的来说是没有public类型的构造函数，
 * 它的构造函数只能是private类型的；enum是单例模式；enum中有一个values方法来获取枚举实例对象数组；
 *
 * */
public enum ContentTypeEnum {
    /**
     *  form-data
     * 就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息，
     * 以标签为单元，用分隔符分开。既可以上传键值对，也可以上传文件。
     * 当上传的字段是文件时，会有Content-Type来表名文件类型；content-disposition，
     * 用来说明字段的一些信息；
     *
     * 由于有boundary隔离，所以multipart/form-data既可以上传文件，
     * 也可以上传键值对，它采用了键值对的方式，所以可以上传多个文件。
     * */
    FORM_DATA("multipart/form-data"),
    /**
     *就是application/x-www-form-urlencoded,会将表单内的数据转换为键值对，
     * 比如,username=张三
     * */
    FORM_URLENCODED("application/x-www-form-urlencoded"),
    /**
     *以上传任意格式的文本，可以上传text、json、xml、html等
     * content-type= text/html（HTML 文档）；
     * text/plain（纯文本）；
     * text/css（CSS 样式表）；
     * application/json (json字符串)
     * */
//    RAW(""),
    /**
     * 相当于Content-Type:application/octet-stream,
     * 从字面意思得知，只可以上传二进制数据，通常用来上传文件，由于没有键值，
     * 所以，一次只能上传一个文件。
     * */
//    BINARY,
    ;

    /***
     * MULTIPART/FORM-DATA与X-WWW-FORM-URLENCODED区别
     * multipart/form-data：既可以上传文件等二进制数据，也可以上传表单键值对，
     * x-www-form-urlencoded：只能上传键值对，并且键值对都是间隔分开的，只是最后会转化为一条信息。
     * @RequestParam
     *
     * 用来处理（前端）Content-Type: 为 application/x-www-form-urlencoded或者form-data编码的内容
     * 该注解有两个属性： value、required； value用来指定要传入值的id名称，required用来指示参数是否必须绑定；
     * @RequestBody
     *
     * 该注解常用来处理Content-Type: 不是application/x-www-form-urlencoded编码的内容，例如application/json, application/xml等；
     * 前端规定的是raw方式，那么就需要使用@RequestBody接收参数，注意这里Headers里需要以application/json作为Content-type
     * ————————————————
     *原文链接：https://blog.csdn.net/Eat_a_meal/article/details/124198611
     * */

    private String contentType = null;
    ContentTypeEnum(String contentType) {
        this.contentType = contentType;
    }

    public String getContentType() {
        return contentType;
    }

    public static void main(String[] args) {
        System.out.println(ContentTypeEnum.FORM_URLENCODED.getContentType());
    }

    //    public String getChannel() {
//        return this.channel;
//    }
}
